﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IChoiceUseCase.cs" company="">
//   
// </copyright>
// <summary>
//   The ChoiceUseCase interface.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Libium.UseCases
{
    using System;
    using System.Collections.Generic;

    /// <summary>
    ///   The ChoiceUseCase interface.
    /// </summary>
    public interface IChoiceUseCase : IUseCase
    {
        #region Public Events

        /// <summary>
        ///   The selected value changed.
        /// </summary>
        event Action<IChoiceUseCase> SelectedValueChanged;

        #endregion

        #region Public Properties

        /// <summary>
        ///   Gets the named values.
        /// </summary>
        IEnumerable<INamedValue> NamedValues { get; }

        /// <summary>
        ///   Gets or sets the selected value.
        /// </summary>
        object SelectedValue { get; set; }
        string SelectedName { get; }

        #endregion
    }
}